package com.jhgsys.internal.accident.service;

import com.jhgsys.internal.accident.dto.AccidentReportDto;
import com.jhgsys.internal.accident.entity.AccidentReport;
import com.jhgsys.internal.common.entity.QueryRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jhgsys.internal.common.exception.FebsException;

import java.util.List;
import java.util.Map;

/**
 *  Service接口
 *
 * @author admin
 * @date 2024-08-07 16:43:01
 */
public interface IAccidentReportService extends IService<AccidentReport> {
    /**
     * 查询（分页）
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param request QueryRequest
     * @param accidentReport accidentReport
     * @return IPage<AccidentReport>
     */
    IPage<AccidentReportDto> findAccidentReports(QueryRequest request, AccidentReportDto accidentReport);

    /**
     * 调查录入 以AccidentReport为主表查询（所有）
     * @author admin
     * @date 2024-08-20 15:49:12
     * @param accidentReportDto accidentReportDto
     * @return List<AccidentReportDto>
     */
    Map<String,Object> findAccidentReportsBySql(AccidentReportDto accidentReportDto);

    /**
     * 调查录入 以AccidentReport为主表查询一对多关联查出reason表
     * @author admin
     * @date 2024-08-20 15:49:12
     * @param accidentReportDto accidentReportDto
     * @return List<AccidentReportDto>
     */
    Map<String,Object> findAccidentReportsAll(AccidentReportDto accidentReportDto);


    /**
     * 整改查询（分页）
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param request QueryRequest
     * @param accidentReport accidentReport
     * @return rectifyList
     */
    IPage<Map<String,Object>> rectifyList(QueryRequest request, AccidentReportDto accidentReport);

    /**
     * 查询（所有）
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param accidentReport accidentReport
     * @return List<AccidentReport>
     */
    List<AccidentReport> findAccidentReports(AccidentReport accidentReport);

    /**
    * 根据ID查询
    * @author admin
    * @date 2024-08-07 16:43:01
    * @param id
    * @return AccidentReport
    */
    AccidentReportDto findAccidentReportById(String id);

    /**
     * 新增
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param accidentReport accidentReport
     */
    void createAccidentReport(AccidentReport accidentReport);

    /**
     * 修改
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param accidentReportDto accidentReportDto
     */
    void updateAccidentReport(AccidentReportDto accidentReportDto);

    /**
     * 保存审核信息
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param accidentReportDto accidentReportDto
     */
    void saveAccidentAuditRecord(AccidentReportDto accidentReportDto);

    /**
     * 逻辑删除
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param accidentReport accidentReport
     * @param accidentReportIds accidentReportIds
     */
    void deleteAccidentReport(AccidentReport accidentReport,String accidentReportIds);

    /**
     * 上报重工
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param accidentReport accidentReport
     * @param accidentReportIds accidentReportIds
     */
    void noticeChic(AccidentReport accidentReport,String accidentReportIds);

    /**
    * 物理删除
    * @author admin
    * @date 2024-08-07 16:43:01
    * @param accidentReportIds accidentReportIds
    */
    void physicallyDeleteAccidentReport(String accidentReportIds);

    /**
     * 生成事故编号 年+公司编码+序列号（5位）
     * @author admin
     * @date 2024-08-07 16:43:01
     * @param tenantId 公司ID
     */
    String createAccidentNo(String tenantId,String deptId) throws FebsException;


    /**
     * 调查指派 增加指派成员
     * @param accidentReportDto
     */
    void updateAndInsertTeam(AccidentReportDto accidentReportDto);

}
